home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v08i015: conquer4 - middle earth multi-player game (V4), Patch5c
- Message-ID: <4515@tekred.CNA.TEK.COM>
- Date: 1 Sep 89 18:54:23 GMT
- Sender: nobody@tekred.CNA.TEK.COM
- Lines: 1632
- Approved: billr@saab.CNA.TEK.COM
-
- Submitted-by: Adam Bryant <adb@cs.bu.edu>
- Posting-number: Volume 8, Issue 15
- Archive-name: conquer4/Patch5c
- Patch-To: conquer4: Volume 6, Issue 83-97
-
-
- #!/bin/sh
- # this is part 3 of a multipart archive
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file patchV4.5 continued
- #
- CurArch=3
- if test ! -r s2_seq_.tmp
- then echo "Please unpack part 1 first!"
- exit 1; fi
- ( read Scheck
- if test "$Scheck" != $CurArch
- then echo "Please unpack part $Scheck next!"
- exit 1;
- else exit 0; fi
- ) < s2_seq_.tmp || exit 1
- echo "x - Continuing file patchV4.5"
- sed 's/^X//' << 'SHAR_EOF' >> patchV4.5
- X+ * The following unseen (UNS_) value represents this.
- X+ */
- X+ #define UNS_CITY_VALUE 10 /* If there is an under-defended City
- X+ * the value is 500
- X+ */
- X+
- X void
- X prtattr()
- X {
- X***************
- X*** 131,137 ****
- X if( ((sct[x][y].owner) == 0
- X || solds_in_sector( x, y, sct[x][y].owner) == 0 )
- X && (ntn[sct[x][y].owner].active!=NPC_NOMAD) ) {
- X! fprintf(fnews,"3.\tnomads capture sector %d,%d\n",x,y);
- X if(sct[x][y].owner!=0) flee(x,y,1,FALSE);
- X sct[x][y].owner=country;
- X DEVASTATE(x,y);
- X--- 169,175 ----
- X if( ((sct[x][y].owner) == 0
- X || solds_in_sector( x, y, sct[x][y].owner) == 0 )
- X && (ntn[sct[x][y].owner].active!=NPC_NOMAD) ) {
- X! fprintf(fnews,"3:\tnomads capture sector %d,%d\n",x,y);
- X if(sct[x][y].owner!=0) flee(x,y,1,FALSE);
- X sct[x][y].owner=country;
- X DEVASTATE(x,y);
- X***************
- X*** 180,186 ****
- X if( ((sct[x][y].owner == 0)
- X || (solds_in_sector( x, y, sct[x][y].owner) == 0))
- X && (ntn[sct[x][y].owner].active != NPC_SAVAGE)) {
- X! fprintf(fnews,"3.\tsavages capture sector %d,%d\n",x,y);
- X if(P_ATYPE<MINLEADER) {
- X if(sct[x][y].owner!=0) flee(x,y,1,FALSE);
- X sct[x][y].owner=country;
- X--- 218,224 ----
- X if( ((sct[x][y].owner == 0)
- X || (solds_in_sector( x, y, sct[x][y].owner) == 0))
- X && (ntn[sct[x][y].owner].active != NPC_SAVAGE)) {
- X! fprintf(fnews,"3:\tsavages capture sector %d,%d\n",x,y);
- X if(P_ATYPE<MINLEADER) {
- X if(sct[x][y].owner!=0) flee(x,y,1,FALSE);
- X sct[x][y].owner=country;
- X***************
- X*** 657,684 ****
- X }
- X }
- X if((free==TRUE)) {
- X! /* want to add ideal troops */
- X! ideal = sct[x][y].people/MILINCITY - P_ASOLD;
- X! ideal = min(ideal, 250);
- X! if (P_ASOLD < 50) /* make the militia at least 50 */
- X! ideal = max(ideal,50-P_ASOLD);
- X! if (P_ASOLD + ideal < 50) /*don't let ideal bring it below 50*/
- X! continue;
- X if(ideal>0){
- X if(magic(country,WARRIOR)==TRUE){ /* WARRIOR power */
- X curntn->tgold-=
- X! (ideal* *(u_encost+P_ATYPE))/2;
- X } else {
- X curntn->tgold-=
- X! ideal* *(u_encost + P_ATYPE);
- X }
- X }
- X- P_ASOLD+=ideal;
- X- P_ATYPE=A_MILITIA;
- X- P_ASTAT=MILITIA;
- X #ifdef DEBUG
- X! printf("\tadding %ld troops to %s army %d (now %ld men - populace %ld)\n",ideal,unittype[P_ATYPE],armynum,P_ASOLD,sct[x][y].people);
- X #endif DEBUG
- X }
- X }
- X check();
- X--- 695,721 ----
- X }
- X }
- X if((free==TRUE)) {
- X! /* want to have ideal troops */
- X! ideal = sct[x][y].people/MILINCITY;
- X!
- X! if(ideal < 50) /* make the militia at least 50 */
- X! ideal = 50;
- X!
- X if(ideal>0){
- X if(magic(country,WARRIOR)==TRUE){ /* WARRIOR power */
- X curntn->tgold-=
- X! ((ideal-P_ASOLD)* *(u_encost+P_ATYPE))/2;
- X } else {
- X curntn->tgold-=
- X! (ideal-P_ASOLD)* *(u_encost + P_ATYPE);
- X }
- X }
- X #ifdef DEBUG
- X! printf("\tadding %ld troops to %s army %d (now %ld men - populace %ld)\n",ideal-P_ASOLD,unittype[P_ATYPE],armynum,ideal,sct[x][y].people);
- X #endif DEBUG
- X+ P_ASOLD=ideal;
- X+ P_ATYPE=A_MILITIA;
- X+ P_ASTAT=MILITIA;
- X }
- X }
- X check();
- X***************
- X*** 824,829 ****
- X--- 861,923 ----
- X }
- X }
- X
- X+
- X+ /* Find the average world food value per sector
- X+ * and the average tradegood value per sector.
- X+ * This is used for unseen sectors and unseen
- X+ * armies. */
- X+ static void
- X+ find_avg_sector ()
- X+ {
- X+ int armynum;
- X+ int i;
- X+ int nation;
- X+ int repeat;
- X+ struct s_sector *sptr; /* used to speed up this function */
- X+ register int x,y;
- X+ register long total_food = 0;
- X+ int total_sectors;
- X+ register long total_tg = 0;
- X+ register long useable_land = 0;
- X+
- X+ for(x=0;x<MAPX;x++) for(y=0;y<MAPY;y++) {
- X+ sptr = &sct[x][y];
- X+ if(( sptr->altitude!=WATER )&&( sptr->altitude!=PEAK )) {
- X+ useable_land++;
- X+ total_food += tofood(sptr,country);
- X+ if(sptr->tradegood != TG_none) {
- X+ if(sptr->metal != 0) total_tg +=500;
- X+ else if(sptr->jewels != 0) total_tg +=500;
- X+ else total_tg +=300;
- X+ }
- X+ }
- X+ }
- X+ Avg_food = total_food / useable_land;
- X+ Avg_tradegood = total_tg / useable_land;
- X+
- X+ for(nation=1;nation<NTOTAL;nation++) {
- X+ if(isntn(ntn[nation].active)
- X+ && !COUNT_ARMIES(nation,country)) {
- X+ /* Count the number of sectors which are occupied by each
- X+ * nation's armies. */
- X+ total_sectors = 0;
- X+ for(armynum=1;armynum<MAXARM;armynum++)
- X+ if(ntn[nation].arm[armynum].sold > 0) {
- X+ x = ntn[nation].arm[armynum].xloc;
- X+ y = ntn[nation].arm[armynum].yloc;
- X+ repeat = FALSE;
- X+ for (i=1; (i<armynum) && !repeat; ++i)
- X+ if((ntn[nation].arm[i].xloc == x)
- X+ && (ntn[nation].arm[i].yloc == y))
- X+ repeat = TRUE;
- X+ if (!repeat)
- X+ total_sectors++;
- X+ }
- X+
- X+ Avg_soldiers[nation] = ntn[nation].tmil / total_sectors;
- X+ }
- X+ }
- X+ }
- X void
- X nationrun()
- X {
- X***************
- X*** 864,869 ****
- X--- 958,965 ----
- X
- X getdstatus();
- X
- X+ find_avg_sector ();
- X+
- X #ifdef SPEW
- X for(x=1;x<NTOTAL;x++) if(isntn( ntn[x].active )) {
- X /* here is the bit which will occasionally send a randomly
- X***************
- X*** 1141,1147 ****
- X for(x=(int)curntn->capx-4;x<=(int)curntn->capx+4;x++){
- X for(y=(int)curntn->capy-4;y<=(int)curntn->capy+4;y++){
- X if((ONMAP(x,y))&&(sct[x][y].owner==0)) {
- X! attr[x][y] += 700;
- X }
- X }
- X }
- X--- 1237,1243 ----
- X for(x=(int)curntn->capx-4;x<=(int)curntn->capx+4;x++){
- X for(y=(int)curntn->capy-4;y<=(int)curntn->capy+4;y++){
- X if((ONMAP(x,y))&&(sct[x][y].owner==0)) {
- X! attr[x][y] += 450;
- X }
- X }
- X }
- X***************
- X*** 1148,1159 ****
- X
- X for(x=stx;x<endx;x++) {
- X for(y=sty;y<endy;y++) {
- X! /* add if metal high */
- X! if(sct[x][y].tradegood != TG_none) {
- X! if(sct[x][y].metal != 0) attr[x][y]+=500;
- X! else if(sct[x][y].jewels != 0) attr[x][y]+=500;
- X! else attr[x][y]+=300;
- X }
- X /*add to attractiveness for unowned sectors*/
- X if(sct[x][y].owner == 0) {
- X attr[x][y]+=300;
- X--- 1244,1261 ----
- X
- X for(x=stx;x<endx;x++) {
- X for(y=sty;y<endy;y++) {
- X! if (SEE_SECTOR(x,y,country)) {
- X! /* add if metal high */
- X! if(sct[x][y].tradegood != TG_none) {
- X! if(sct[x][y].metal != 0) attr[x][y]+=500;
- X! else if(sct[x][y].jewels != 0) attr[x][y]+=500;
- X! else attr[x][y]+=300;
- X! }
- X }
- X+ else
- X+ /*give some value: tradegood MIGHT be there*/
- X+ attr[x][y] += Avg_tradegood;
- X+
- X /*add to attractiveness for unowned sectors*/
- X if(sct[x][y].owner == 0) {
- X attr[x][y]+=300;
- X***************
- X*** 1161,1167 ****
- X if(ntn[sct[x][y].owner].active == NPC_NOMAD)
- X attr[x][y]+=100;
- X }
- X! attr[x][y] += 50*tofood(&sct[x][y],country);
- X
- X if(!is_habitable(x,y)) {
- X #ifdef XENIX
- X--- 1263,1273 ----
- X if(ntn[sct[x][y].owner].active == NPC_NOMAD)
- X attr[x][y]+=100;
- X }
- X! if (SEE_SECTOR(x,y,country))
- X! attr[x][y] += 50*tofood(&sct[x][y],country);
- X! else
- X! /* give some value: there is probably average food there */
- X! attr[x][y] += 50*Avg_food;
- X
- X if(!is_habitable(x,y)) {
- X #ifdef XENIX
- X***************
- X*** 1175,1192 ****
- X }
- X }
- X }
- X void
- X n_defend(natn)
- X register short natn;
- X {
- X! int x,y;
- X
- X! /* add 1/10th of their soldiers in sector */
- X! for(x=1;x<MAXARM;x++) if(ntn[natn].arm[x].sold > 0)
- X! if(sct[ntn[natn].arm[x].xloc][ntn[natn].arm[x].yloc].owner==country)
- X! attr[ntn[natn].arm[x].xloc][ntn[natn].arm[x].yloc] +=
- X! ntn[natn].arm[x].sold/10;
- X
- X /*plus 80 if near your capitol */
- X for(x=(int)curntn->capx-1;x<=(int)curntn->capy+1;x++){
- X for(y=(int)curntn->capy-1;y<=(int)curntn->capy+1;y++){
- X--- 1281,1324 ----
- X }
- X }
- X }
- X+
- X void
- X n_defend(natn)
- X register short natn;
- X {
- X! register int i,j;
- X! int repeat;
- X! register int x,y;
- X
- X! if (COUNT_ARMIES(natn,country)) {
- X! /* add 1/10th of their soldiers in sector */
- X! for(x=1;x<MAXARM;x++) if(ntn[natn].arm[x].sold > 0)
- X! if(sct[ntn[natn].arm[x].xloc][ntn[natn].arm[x].yloc].owner==country)
- X! attr[ntn[natn].arm[x].xloc][ntn[natn].arm[x].yloc] +=
- X! ntn[natn].arm[x].sold/10;
- X! }
- X! else {
- X! /* For every of this country's sectors that has a 'natn' army
- X! * in it, add 1/10 of the average number of soldiers in that
- X! * 'natn' army.
- X! */
- X! for(j=1;j<MAXARM;j++) if(ntn[natn].arm[j].sold > 0) {
- X! x = ntn[natn].arm[j].xloc;
- X! y = ntn[natn].arm[j].yloc;
- X! if(sct[x][y].owner==country) {
- X! /* insure the average soldiers is only added
- X! * once per sector */
- X! repeat = FALSE;
- X! for (i=1; (i<j) && !repeat; ++i)
- X! if((ntn[natn].arm[i].xloc == x)
- X! && (ntn[natn].arm[i].yloc == y))
- X! repeat = TRUE;
- X
- X+ if (!repeat)
- X+ attr[x][y] += Avg_soldiers[natn]/10;
- X+ }
- X+ }
- X+ }
- X /*plus 80 if near your capitol */
- X for(x=(int)curntn->capx-1;x<=(int)curntn->capy+1;x++){
- X for(y=(int)curntn->capy-1;y<=(int)curntn->capy+1;y++){
- X***************
- X*** 1218,1235 ****
- X long solds; /* solds within 1 of capitol or city */
- X
- X for(x=stx;x<endx;x++) for(y=sty;y<endy;y++){
- X! if((sct[x][y].owner==nation)&&
- X! ((sct[x][y].designation==DCITY)
- X! ||(sct[x][y].designation==DCAPITOL)
- X! ||(sct[x][y].designation==DTOWN))){
- X! solds=0;
- X! for(armynum=1;armynum<MAXARM;armynum++)
- X! if((ntn[country].arm[armynum].sold > 0)
- X! &&(abs(AXLOC-x)<=1)
- X! &&(abs(AYLOC-y)<=1)) solds+=ASOLD;
- X!
- X! if(solds_in_sector(x,y,nation)*2 < 3*solds)
- X! attr[x][y]+=500;
- X }
- X }
- X }
- X--- 1350,1380 ----
- X long solds; /* solds within 1 of capitol or city */
- X
- X for(x=stx;x<endx;x++) for(y=sty;y<endy;y++){
- X! if(sct[x][y].owner==nation) {
- X! if(SEE_CITIES(nation,country)) {
- X! if (((sct[x][y].designation==DCITY)
- X! ||(sct[x][y].designation==DCAPITOL)
- X! ||(sct[x][y].designation==DTOWN))){
- X! solds=0;
- X! for(armynum=1;armynum<MAXARM;armynum++)
- X! if((ntn[country].arm[armynum].sold > 0)
- X! &&(abs(AXLOC-x)<=1)
- X! &&(abs(AYLOC-y)<=1)) solds+=ASOLD;
- X!
- X! if (COUNT_ARMIES(nation,country)) {
- X! if(solds_in_sector(x,y,nation)*2 < 3*solds)
- X! attr[x][y]+=500;
- X! }
- X! else {
- X! if((solds_in_sector(x,y,nation) != 0)
- X! &&(Avg_soldiers[nation]*2 < 3*solds))
- X! attr[x][y]+=400;
- X! }
- X! }
- X! }
- X! else
- X! /* Give some value: the sector MIGHT be an under-defended city */
- X! attr[x][y] += UNS_CITY_VALUE;
- X }
- X }
- X }
- X***************
- X*** 1273,1278 ****
- X--- 1418,1426 ----
- X {
- X int x1,x2,y1,y2,x,y;
- X
- X+ if (SEE_CITIES(nation,country)==FALSE)
- X+ return;
- X+
- X /*plus if strategic blocking sector*/
- X
- X /*+60 if between the two capitol*/
- X***************
- X*** 1304,1311 ****
- X--- 1452,1462 ----
- X void
- X n_survive()
- X {
- X+ int i;
- X int nation,armynum;
- X int capx,capy;
- X+ int repeat;
- X+ int x,y;
- X
- X capx=curntn->capx;
- X capy=curntn->capy;
- X***************
- X*** 1315,1336 ****
- X }
- X
- X /*defend your capitol if occupied, +50 more if with their army*/
- X! for(nation=1;nation<NTOTAL;nation++)
- X if((isntn(ntn[nation].active))
- X &&((ntn[nation].dstatus[country]>=WAR)
- X ||(curntn->dstatus[nation]>=WAR))){
- X! for(armynum=1;armynum<MAXARM;armynum++)
- X! if((ntn[nation].arm[armynum].sold > 0)
- X! &&( ntn[nation].arm[armynum].xloc<=capx+2)
- X! &&( ntn[nation].arm[armynum].xloc>=capx-2)
- X! &&( ntn[nation].arm[armynum].yloc<=capy+2)
- X! &&( ntn[nation].arm[armynum].yloc>=capy-2)){
- X! if((ntn[nation].arm[armynum].xloc==capx)
- X! &&(ntn[nation].arm[armynum].yloc==capy)){
- X! attr[capx][capy]+=2*ntn[nation].arm[armynum].sold;
- X! } else {
- X! attr[ntn[nation].arm[armynum].xloc][ntn[nation].arm[armynum].yloc]+=ntn[nation].arm[armynum].sold;
- X }
- X }
- X }
- X }
- X--- 1466,1520 ----
- X }
- X
- X /*defend your capitol if occupied, +50 more if with their army*/
- X! for(nation=1;nation<NTOTAL;nation++)
- X if((isntn(ntn[nation].active))
- X &&((ntn[nation].dstatus[country]>=WAR)
- X ||(curntn->dstatus[nation]>=WAR))){
- X! if (COUNT_ARMIES(nation,country)) {
- X! for(armynum=1;armynum<MAXARM;armynum++)
- X! if((ntn[nation].arm[armynum].sold > 0)
- X! &&( ntn[nation].arm[armynum].xloc<=capx+2)
- X! &&( ntn[nation].arm[armynum].xloc>=capx-2)
- X! &&( ntn[nation].arm[armynum].yloc<=capy+2)
- X! &&( ntn[nation].arm[armynum].yloc>=capy-2)){
- X! if((ntn[nation].arm[armynum].xloc==capx)
- X! &&(ntn[nation].arm[armynum].yloc==capy)){
- X! attr[capx][capy]+=2*ntn[nation].arm[armynum].sold;
- X! }
- X! else {
- X! attr[ntn[nation].arm[armynum].xloc][ntn[nation].arm[armynum].yloc]+=ntn[nation].arm[armynum].sold;
- X! }
- X }
- X+ } else {
- X+ /* The next line might be more accurate to take into account
- X+ * the actual number of armies that natn has, but I don't
- X+ * think that VOID or HIDDEN should allow that to be known.
- X+ */
- X+ for(armynum=1;armynum<MAXARM;armynum++)
- X+ if(ntn[nation].arm[armynum].sold > 0) {
- X+ x = ntn[nation].arm[armynum].xloc;
- X+ y = ntn[nation].arm[armynum].yloc;
- X+ if((capx-2<=x && x<=capx+2)
- X+ &&( capy-2<=y && y<=capy+2)){
- X+ /* insure the average soldiers is only added
- X+ * once per sector
- X+ */
- X+ repeat = FALSE;
- X+ for (i=1; (i<armynum) && !repeat; ++i)
- X+ if((ntn[nation].arm[i].xloc == x)
- X+ && (ntn[nation].arm[i].yloc == y))
- X+ repeat = TRUE;
- X+ if (!repeat) {
- X+ if((ntn[nation].arm[armynum].xloc==capx)
- X+ &&(ntn[nation].arm[armynum].yloc==capy)){
- X+ attr[capx][capy]+=2* Avg_soldiers[nation];
- X+ }
- X+ else {
- X+ attr[ntn[nation].arm[armynum].xloc][ntn[nation].arm[armynum].yloc]+= Avg_soldiers[nation];
- X+ }
- X+ }
- X+ }
- X+ }
- X }
- X }
- X }
- X***************
- X*** 1399,1404 ****
- X--- 1583,1589 ----
- X #ifdef DEBUG
- X printf("pceattr()\n");
- X #endif DEBUG
- X+ n_unowned();
- X n_unowned();
- X n_unowned();
- X n_trespass();
- X*** onations Sat Aug 26 19:04:07 1989
- X--- nations Sat Aug 26 19:04:24 1989
- X***************
- X*** 50,56 ****
- X #########################################################################
- X argos The_Ed H A F 10 10 9 50000 1000 60 8 i -1 -1 1
- X anorian Anudil E a F 30 40 8 70000 1500 60 8 g -1 -1 3
- X! bobland Dogon O B G 20 0 6 12000 1500 70 13 i -1 -1 9
- X darboth balrog O D R 0 0 7 70000 1500 70 12 e -1 -1 8
- X edland Debbra H E R 10 15 12 30000 1000 60 8 g -1 -1 1
- X fung Fungus E F G 10 40 8 50000 1000 70 8 i -1 -1 1
- X--- 50,56 ----
- X #########################################################################
- X argos The_Ed H A F 10 10 9 50000 1000 60 8 i -1 -1 1
- X anorian Anudil E a F 30 40 8 70000 1500 60 8 g -1 -1 3
- X! bobland Dogon O B G 20 0 6 12000 1500 70 12 i -1 -1 9
- X darboth balrog O D R 0 0 7 70000 1500 70 12 e -1 -1 8
- X edland Debbra H E R 10 15 12 30000 1000 60 8 g -1 -1 1
- X fung Fungus E F G 10 40 8 50000 1000 70 8 i -1 -1 1
- X***************
- X*** 57,69 ****
- X goldor Train D G F 10 15 8 30000 1000 70 8 n -1 -1 2
- X haro Cesear H H R 10 10 9 30000 1500 60 7 i -1 -1 1
- X jodoba Ganalf H J R 10 10 2 30000 1500 60 8 n -1 -1 3
- X! lint Lynne E L F 20 30 8 50000 1500 70 10 g -1 -1 3
- X muldor Gilur D M F 10 30 6 160000 1500 70 9 n -1 -1 1
- X! noria Gloin D N R 10 30 6 50000 1000 60 8 n -1 -1 1
- X tokus Sumu H T R 10 10 8 30000 1000 60 8 e -1 -1 1
- X! woooo Nastus O W F 10 10 10 60000 3500 75 13 e -1 -1 10
- X! zaos Dragonus O Z R 20 0 8 12000 1500 70 14 e -1 -1 9
- X frika Frik D f F 10 10 8 50000 1200 60 10 n -1 -1 1
- X amazon Diana E X F 10 10 8 50000 1200 60 10 e -1 -1 2
- X! tasman Obilisk H t F 10 10 8 50000 1200 60 10 g -1 -1 3
- X sahara Barbar H S F 10 10 8 50000 1200 60 10 i -1 -1 4
- X--- 57,69 ----
- X goldor Train D G F 10 15 8 30000 1000 70 8 n -1 -1 2
- X haro Cesear H H R 10 10 9 30000 1500 60 7 i -1 -1 1
- X jodoba Ganalf H J R 10 10 2 30000 1500 60 8 n -1 -1 3
- X! #lint Lynne E L F 20 30 8 50000 1500 70 10 g -1 -1 3
- X muldor Gilur D M F 10 30 6 160000 1500 70 9 n -1 -1 1
- X! #noria Gloin D N R 10 30 6 50000 1000 60 8 n -1 -1 1
- X tokus Sumu H T R 10 10 8 30000 1000 60 8 e -1 -1 1
- X! woooo Nastus O W F 10 10 10 60000 3500 75 11 e -1 -1 10
- X! #zaos Dragonus O Z R 20 0 8 12000 1500 70 12 e -1 -1 9
- X frika Frik D f F 10 10 8 50000 1200 60 10 n -1 -1 1
- X amazon Diana E X F 10 10 8 50000 1200 60 10 e -1 -1 2
- X! #tasman Obilisk H t F 10 10 8 50000 1200 60 10 g -1 -1 3
- X sahara Barbar H S F 10 10 8 50000 1200 60 10 i -1 -1 4
- X*** onavy.c Sat Aug 26 19:04:07 1989
- X--- navy.c Sat Aug 26 19:04:25 1989
- X***************
- X*** 423,429 ****
- X }
- X P_ASTAT=DEFEND;
- X P_NARMY=MAXARM;
- X! P_NMOVE=0;
- X NADJMOV;
- X NADJHLD;
- X AADJSTAT;
- X--- 423,435 ----
- X }
- X P_ASTAT=DEFEND;
- X P_NARMY=MAXARM;
- X! if ((sct[XREAL][YREAL].designation!=DCITY
- X! && sct[XREAL][YREAL].designation!=DCAPITOL)
- X! || P_NMOVE < N_CITYCOST) {
- X! P_NMOVE=0;
- X! } else {
- X! P_NMOVE-= N_CITYCOST;
- X! }
- X NADJMOV;
- X NADJHLD;
- X AADJSTAT;
- X***************
- X*** 445,451 ****
- X sct[XREAL][YREAL].people += amount;
- X P_NPEOP=(unsigned char)((mhold*P_NPEOP-amount)/mhold);
- X NADJHLD;
- X! P_NMOVE=0;
- X NADJMOV;
- X SADJCIV;
- X }
- X--- 451,463 ----
- X sct[XREAL][YREAL].people += amount;
- X P_NPEOP=(unsigned char)((mhold*P_NPEOP-amount)/mhold);
- X NADJHLD;
- X! if ((sct[XREAL][YREAL].designation!=DCITY
- X! && sct[XREAL][YREAL].designation!=DCAPITOL)
- X! || P_NMOVE < N_CITYCOST) {
- X! P_NMOVE=0;
- X! } else {
- X! P_NMOVE-= N_CITYCOST;
- X! }
- X NADJMOV;
- X SADJCIV;
- X }
- X***************
- X*** 483,489 ****
- X P_ASTAT=ONBOARD;
- X P_AMOVE=0;
- X P_NARMY=armynum;
- X! P_NMOVE=0;
- X NADJMOV;
- X NADJHLD;
- X AADJMOV;
- X--- 495,507 ----
- X P_ASTAT=ONBOARD;
- X P_AMOVE=0;
- X P_NARMY=armynum;
- X! if ((sct[XREAL][YREAL].designation!=DCITY
- X! && sct[XREAL][YREAL].designation!=DCAPITOL)
- X! || P_NMOVE < N_CITYCOST) {
- X! P_NMOVE=0;
- X! } else {
- X! P_NMOVE-= N_CITYCOST;
- X! }
- X NADJMOV;
- X NADJHLD;
- X AADJMOV;
- X***************
- X*** 503,509 ****
- X sct[XREAL][YREAL].people -= amount;
- X P_NPEOP += (unsigned char)(amount / mhold);
- X SADJCIV;
- X! P_NMOVE=0;
- X NADJMOV;
- X NADJHLD;
- X }
- X--- 521,533 ----
- X sct[XREAL][YREAL].people -= amount;
- X P_NPEOP += (unsigned char)(amount / mhold);
- X SADJCIV;
- X! if ((sct[XREAL][YREAL].designation!=DCITY
- X! && sct[XREAL][YREAL].designation!=DCAPITOL)
- X! || P_NMOVE < N_CITYCOST) {
- X! P_NMOVE=0;
- X! } else {
- X! P_NMOVE-= N_CITYCOST;
- X! }
- X NADJMOV;
- X NADJHLD;
- X }
- X*** otxt0 Sat Aug 26 19:04:08 1989
- X--- txt0 Sat Aug 26 19:04:25 1989
- X***************
- X*** 17,23 ****
- X 'S': diplomacy status MISC COMMANDS 'a': army report
- X 'q': quit and save 'f': fleet report
- X VISUAL 'v': version credits 'g': group army report
- X! 'd': change display 'Q': quit and save 'w': wizardry commands
- X 'cntrl-L': redraw '?': help screens 'ESC': extra commands
- X END
- X CONQUER EXTENDED COMMANDS
- X--- 17,23 ----
- X 'S': diplomacy status MISC COMMANDS 'a': army report
- X 'q': quit and save 'f': fleet report
- X VISUAL 'v': version credits 'g': group army report
- X! 'd': change display '!': repeat unit cmd 'w': wizardry commands
- X 'cntrl-L': redraw '?': help screens 'ESC': extra commands
- X END
- X CONQUER EXTENDED COMMANDS
- X***************
- X*** 65,74 ****
- X
- X To facilitate the use of conquer, the environment variable
- X XCONQENV has been added to conquer to allow settings of default options
- X! to conquer. Just add a line to your .cshrc or .login file with the
- X! following format:
- X
- X! setenv XCONQENV "G,nation=MyLand,datadir=this_game"
- X
- X If you then type just 'conquer' to enter conquer, it will be
- X equivalent to typing 'conquer -G -n MyLand -d this_game'.
- X--- 65,75 ----
- X
- X To facilitate the use of conquer, the environment variable
- X XCONQENV has been added to conquer to allow settings of default options
- X! to conquer. Just add a line to your .cshrc or .login (BSD) or .profile (SYSV)
- X! file with the following format:
- X
- X! setenv XCONQENV "G,nation=MyLand,datadir=this_game" (BSD)
- X! XCONQENV="G,nation=MyLand,datadir=this_game" (SYSV)
- X
- X If you then type just 'conquer' to enter conquer, it will be
- X equivalent to typing 'conquer -G -n MyLand -d this_game'.
- X*** otxt2 Sat Aug 26 19:04:08 1989
- X--- txt2 Sat Aug 26 19:04:26 1989
- X***************
- X*** 192,199 ****
- X Medium Two +XSIZESPD 2 x Base
- X Heavy Three +0 3 x Base
- X
- X! Ship maintenance will cost XSHIPMAINT per holding space
- X! on each update.
- X END
- X SHIP INFORMATION
- X
- X--- 192,199 ----
- X Medium Two +XSIZESPD 2 x Base
- X Heavy Three +0 3 x Base
- X
- X! Ship maintenance will cost XSHIPMAINT per holding space on each update.
- X! (Un)loading costs XNCITYCOST movement in cities, full movement elsewhere.
- X END
- X SHIP INFORMATION
- X
- X*** otxt5 Sat Aug 26 19:04:08 1989
- X--- txt5 Sat Aug 26 19:04:26 1989
- X***************
- X*** 114,120 ****
- X produces 3 points of popularity. Special display and redesignation options
- X will help you redesignate sectors to use the tradegood you desire.
- X
- X! popularity fur(1,any),wool(3,farm),beer(3,farm),cloth(3,farm),wine(5,farm)
- X communications mules(1,town),horses(5,town),pigeons(7,town),griffons(9,town)
- X spoilrate pottery(1,town),salt(3,mine),timber(1,lumberyard),
- X granite(1,mine),pine(3,lumberyd),oak(5,lumberyd),nails(7,town)
- X--- 114,120 ----
- X produces 3 points of popularity. Special display and redesignation options
- X will help you redesignate sectors to use the tradegood you desire.
- X
- X! popularity fur(2,any),wool(5,farm),beer(6,farm),cloth(6,farm),wine(9,farm)
- X communications mules(1,town),horses(5,town),pigeons(7,town),griffons(9,town)
- X spoilrate pottery(1,town),salt(3,mine),timber(1,lumberyard),
- X granite(1,mine),pine(3,lumberyd),oak(5,lumberyd),nails(7,town)
- X***************
- X*** 204,209 ****
- X--- 204,210 ----
- X 100-wealth/4. Charity is a user paramter, which indicates the
- X percent of your NET income to go to the poor. Giving twice your
- X population in talons will reduce poverty by one.
- X+ wealth : see elsewhere.
- X END
- X ADDITIONAL MODIFIERS TO NATIONAL ATTRIBUTES
- X
- SHAR_EOF
- echo "File patchV4.5 is complete"
- chmod 0666 patchV4.5 || echo "restore of patchV4.5 fails"
- set `wc -c patchV4.5`;Sum=$1
- if test "$Sum" != "111877"
- then echo original size 111877, current size $Sum;fi
- echo "x - extracting psmap.c (Text)"
- sed 's/^X//' << 'SHAR_EOF' > psmap.c &&
- X
- X/*
- X * A program to convert conquer-maps to postscript Feel free to hack'n slash
- X * Comments should be sent to d8forma@dtek.chalmers.se
- X *
- X */
- X
- X#include <stdio.h>
- X#include "psmap.h"
- X
- Xchar buffer[BUFSIZ];
- Xint c, xsize, ysize;
- Xint xmin, ymin, xmax, ymax, centx, centy;
- XFILE *infile, *outfile, *fh, *fopen();
- Xint grid = TRUE, sqsize = 9, maptype = SIMPLE, onepage = FALSE;
- Xint verbose = FALSE, coords = TRUE, center = TRUE, note = FALSE;
- Xint pagewidth, pageheight, xoffset, yoffset;
- Xchar title[81] = "", foot[81], fontname[81];
- Xchar progname[80];
- X
- Xint
- Xparsepagesize(buf)
- X char *buf;
- X{
- X if (!strcmp(buf, "A4"))
- X return (1);
- X if (!strcmp(buf, "a4"))
- X return (1);
- X if (!strcmp(buf, "LETTER"))
- X return (2);
- X if (!strcmp(buf, "letter"))
- X return (2);
- X return (0);
- X}
- X
- Xvoid
- Xsetpagesize(defpag)
- X int defpag;
- X{
- X switch (defpag) {
- X case 1:
- X pagewidth = PAGEWIDTH_A4;
- X pageheight = PAGEHEIGHT_A4;
- X xoffset = XOFFSET_A4;
- X yoffset = YOFFSET_A4;
- X break;
- X case 2:
- X pagewidth = PAGEWIDTH_LETTER;
- X pageheight = PAGEHEIGHT_LETTER;
- X xoffset = XOFFSET_LETTER;
- X yoffset = YOFFSET_LETTER;
- X break;
- X default:
- X pagewidth = PAGEWIDTH_OTHER;
- X pageheight = PAGEHEIGHT_OTHER;
- X xoffset = XOFFSET_OTHER;
- X yoffset = YOFFSET_OTHER;
- X break;
- X }
- X}
- X
- Xvoid
- Xget_pagesize()
- X{
- X char *buf;
- X int defpag = DEFAULTPAGE;
- X
- X buf = (char *) getenv("CONQ_PSMAPDEFAULTPAGE");
- X if (buf != NULL)
- X defpag = parsepagesize(buf);
- X setpagesize(defpag);
- X}
- X
- Xvoid
- Xpsstring(fh, str)
- X FILE *fh;
- X char *str;
- X{
- X fprintf(fh, "(");
- X while (*str != NULL) {
- X switch (*str) {
- X case ('('):
- X fprintf(fh, "\\(");
- X break;
- X case (')'):
- X fprintf(fh, "\\)");
- X break;
- X case ('\\'):
- X fprintf(fh, "\\\\");
- X break;
- X case ('\n'):
- X case ('\f'):
- X break;
- X default:
- X fputc(*str, fh);
- X break;
- X }
- X str++;
- X }
- X fprintf(fh, ")");
- X}
- X
- Xint
- Xisinstr(string, word)
- X char *string, *word;
- X{
- X while ((c = index(string, *word)) != 0)
- X if (!strncmp((char *) c, word, strlen(word))) {
- X return (TRUE);
- X } else
- X string = (char *) c + 1;
- X return (FALSE);
- X}
- X
- Xint
- Xgetmaptype(string)
- X char *string;
- X{
- X if (isinstr(string, "Altitude"))
- X return (ALTITUDES);
- X if (isinstr(string, "Designation"))
- X return (DESIGNATIONS);
- X if (isinstr(string, "Nation"))
- X return (NATIONS);
- X if (isinstr(string, "Vegetation"))
- X return (VEGETATIONS);
- X return (SIMPLE);
- X}
- X
- Xvoid
- Xreadmap()
- X{
- X int x, none;
- X
- X /*
- X * Now we read the map. Anybody got an idea how big it is ? I don't, but
- X * who cares ?
- X */
- X
- X x = 0;
- X xsize = 0;
- X ysize = 0;
- X xmin = 0xffffff;
- X xmax = (-1);
- X ymin = (-1);
- X ymax = 0;
- X none = TRUE;
- X
- X fprintf(outfile, "/Map [\n");
- X
- X while ((c = fgetc(infile)) != EOF) {
- X switch (c) {
- X case ('\n'):
- X if (xsize == 0)
- X xsize = x;
- X if (xsize != x) {
- X fprintf(stderr, "Error in map-file. Lines different length\n");
- X exit(1);
- X }
- X x = 0;
- X if ((xmax > -1) && (ymin == -1))
- X ymin = ysize;
- X ysize++;
- X fprintf(outfile, ")\n");
- X none = TRUE;
- X break;
- X case (' '):
- X x++;
- X if (none) {
- X fprintf(outfile, "(");
- X none = FALSE;
- X }
- X fprintf(outfile, " ");
- X break;
- X default:
- X if (x < xmin)
- X xmin = x;
- X if (x > xmax)
- X xmax = x;
- X if (ysize > ymax)
- X ymax = ysize;
- X x++;
- X if (none) {
- X fprintf(outfile, "(");
- X none = FALSE;
- X }
- X fprintf(outfile, "%c", c);
- X break;
- X }
- X }
- X
- X fprintf(outfile, "] def\n\n");
- X
- X /* Did I get anything ? */
- X if (xmax == -1) {
- X fprintf(stderr, "Empty input file\n");
- X exit(1);
- X }
- X if (verbose) {
- X fprintf(stderr, "Map is %d * %d squares\n", xsize, ysize);
- X fprintf(stderr, "You can see %d * %d squares\n",
- X xmax - xmin + 1, ymax - ymin + 1);
- X }
- X}
- X
- Xvoid
- Xbuildps()
- X{
- X int xbeg, ybeg, xnumb, ynumb, x, y, xpages, ypages, xcorr, ycorr;
- X
- X /*
- X * The map should be dumped to the outfile now. Maybe we should tell the
- X * printer what to do with it?
- X */
- X
- X xpages = 1 + (xmax - xmin) * sqsize / (pagewidth - XMARGINS);
- X ypages = 1 + (ymax - ymin) * sqsize / (pageheight - YMARGINS);
- X
- X if (verbose)
- X fprintf(stderr, "The map will be %d * %d pages\n", xpages, ypages);
- X
- X fprintf(outfile, "/xmin %d def\n", xmin);
- X fprintf(outfile, "/ymin %d def\n", ymin);
- X fprintf(outfile, "/xmax %d def\n", xmax);
- X fprintf(outfile, "/ymax %d def\n", ymax);
- X fprintf(outfile, "/xpages %d def\n", xpages);
- X fprintf(outfile, "/ypages %d def\n", ypages);
- X fprintf(outfile, "/sqsize %d def\n", sqsize);
- X fprintf(outfile, "/title ");
- X psstring(outfile, title);
- X fprintf(outfile, " def\n");
- X fprintf(outfile, "/foot ");
- X psstring(outfile, foot);
- X fprintf(outfile, " def\n");
- X fprintf(outfile, "/foot2 (ConqPS Version %s) def\n", VERSION);
- X fprintf(outfile, "/PAGEWIDTH %d def\n", pagewidth);
- X fprintf(outfile, "/PAGEHEIGHT %d def\n", pageheight);
- X fprintf(outfile, "/XMARGINS %d def\n", XMARGINS);
- X fprintf(outfile, "/YMARGINS %d def\n", YMARGINS);
- X fprintf(outfile, "/XOFFSET %d def\n", xoffset);
- X fprintf(outfile, "/YOFFSET %d def\n", yoffset);
- X fprintf(outfile, "/maptype %d def\n", maptype);
- X fprintf(outfile, "/font /%s def\n", fontname);
- X fprintf(outfile, "/grid ");
- X if (grid) {
- X fprintf(outfile, "true def\n");
- X } else
- X fprintf(outfile, "false def\n");
- X fprintf(outfile, "/coords ");
- X if (coords) {
- X fprintf(outfile, "true def\n");
- X } else
- X fprintf(outfile, "false def\n");
- X fprintf(outfile, "/noteq ");
- X if (note) {
- X fprintf(outfile, "true def\n");
- X } else
- X fprintf(outfile, "false def\n");
- X
- X fprintf(outfile, "\n\n");
- X
- X fh = fopen(PSFILE, "r");
- X
- X if (fh == NULL) {
- X perror(progname);
- X exit(-10);
- X }
- X while ((c = fgetc(fh)) != EOF)
- X fputc(c, outfile);
- X
- X fclose(fh);
- X
- X fprintf(outfile, "\n %% Here we start the magic\n");
- X
- X xnumb = (int) ((pagewidth - XMARGINS) / sqsize);
- X ynumb = (int) ((pageheight - YMARGINS) / sqsize);
- X
- X if (center) {
- X xcorr = (int) ((xpages * xnumb - (xmax - xmin)) / 2);
- X ycorr = (int) ((ypages * ynumb - (ymax - ymin)) / 2);
- X } else {
- X xcorr = 0;
- X ycorr = 0;
- X }
- X
- X if (onepage) {
- X fprintf(outfile, "%d %d %d %d %d %d DoPage\n",
- X 1, 1, centx - xnumb / 2, xnumb, centy - ynumb / 2, ynumb);
- X } else
- X for (x = 0; x < xpages; x++)
- X for (y = 0; y < ypages; y++) {
- X xbeg = x * xnumb + x + xmin - xcorr;
- X ybeg = y * ynumb + y + ymin - ycorr;
- X fprintf(outfile, "%d %d %d %d %d %d DoPage\n",
- X x + 1, y + 1, xbeg, xnumb, ybeg, ynumb);
- X }
- X}
- X
- Xmain(argc, argv)
- X int argc;
- X char **argv;
- X{
- X extern char *optarg;
- X extern int optind;
- X char *buf, firstline[81];
- X
- X strcpy(progname, argv[0]);
- X infile = stdin;
- X outfile = stdout;
- X buf = (char *) getenv("CONQ_PSFONT");
- X if (buf != NULL) {
- X strncpy(fontname, buf, 80);
- X fontname[79] = '\0';
- X } else
- X strcpy(fontname, "Times-Roman");
- X get_pagesize();
- X
- X while ((c = getopt(argc, argv, "nuf:gs:t:vcho:p:lW:L:X:Y:")) != -1)
- X switch (c) {
- X case 'h':
- X fprintf(stderr, "%s version %s\n", progname, VERSION);
- X fprintf(stderr, "Default pagesize is ");
- X switch (DEFAULTPAGE) {
- X case 1:
- X fprintf(stderr, "A4\n");
- X break;
- X case 2:
- X fprintf(stderr, "LETTER\n");
- X break;
- X default:
- X fprintf(stderr, "OTHER\n");
- X break;
- X }
- X fprintf(stderr, USAGE, progname);
- X fprintf(stderr, "\t-c Turn off coordinates\n");
- X fprintf(stderr, "\t-f Set the font\n");
- X fprintf(stderr, "\t-g Turn off grid\n");
- X fprintf(stderr, "\t-h Show this text\n");
- X fprintf(stderr, "\t-l Print large maps\n");
- X fprintf(stderr, "\t-L Set the pagelength\n");
- X fprintf(stderr, "\t-n Turn off map centering\n");
- X fprintf(stderr, "\t-o Show one page centered around x,y\n");
- X fprintf(stderr, "\t-p Set pagesize (A4,LETTER or OTHER)\n");
- X fprintf(stderr, "\t-s Set size of square (default: %d)\n", sqsize);
- X fprintf(stderr, "\t-t Set the title of the map\n");
- X fprintf(stderr, "\t-u Force simple map output (just letters)\n");
- X fprintf(stderr, "\t-v Verbose mode\n");
- X fprintf(stderr, "\t-W Set the pagewidth\n");
- X fprintf(stderr, "\t-X Set the X-offset\n");
- X fprintf(stderr, "\t-Y Set the Y-offset\n");
- X exit(1);
- X case 'u':
- X maptype = FORCED;
- X break;
- X case 'o':
- X onepage = TRUE; /* Mode one of onepage */
- X if (2 != sscanf(optarg, "%d,%d", ¢x, ¢y)) {
- X fprintf(stderr, "Error in coordinates to o-option\n");
- X exit(1);
- X }
- X break;
- X case 'l':
- X note = TRUE;
- X break;
- X case 'p':
- X setpagesize(parsepagesize(optarg));
- X break;
- X case 'n':
- X center = FALSE;
- X break;
- X case 'g':
- X grid = FALSE;
- X break;
- X case 's':
- X sscanf(optarg, "%d", &sqsize);
- X break;
- X case 'f':
- X strncpy(fontname, optarg, 80);
- X fontname[79] = '\0';
- X break;
- X case 't':
- X strncpy(title, optarg, 80);
- X title[79] = '\0';
- X break;
- X case 'v':
- X verbose = TRUE;
- X break;
- X case 'c':
- X coords = FALSE;
- X break;
- X case 'W':
- X sscanf(optarg, "%d", &pagewidth);
- X break;
- X case 'L':
- X sscanf(optarg, "%d", &pageheight);
- X break;
- X case 'X':
- X sscanf(optarg, "%d", &xoffset);
- X break;
- X case 'Y':
- X sscanf(optarg, "%d", &yoffset);
- X break;
- X default:
- X fprintf(stderr, USAGE, argv[0]);
- X exit(1);
- X }
- X if (optind < argc)
- X infile = fopen(argv[optind], "r");
- X
- X if (infile == NULL) {
- X perror(progname);
- X exit(-10);
- X }
- X if (++optind < argc)
- X outfile = fopen(argv[optind], "w");
- X
- X if (outfile == NULL) {
- X perror(progname);
- X exit(-10);
- X }
- X setbuf(outfile, buffer); /* They recomended this on the net today */
- X
- X if (++optind < argc) {
- X fprintf(stderr, USAGE, argv[0]);
- X exit(1);
- X }
- X /* If verbose identify program */
- X
- X if (verbose)
- X fprintf(stderr, "Psmap version %s\n", VERSION);
- X
- X
- X /* First we check if the infile is a valid conquer map file */
- X
- X if (NULL == fgets(firstline, 80, infile)) {
- X fprintf(stderr, "Empty input file\n");
- X exit(1);
- X }
- X if (0 != strncmp(firstline, MATCHSTRING, strlen(MATCHSTRING))) {
- X fprintf(stderr, "Not a Conquer Map file\n");
- X exit(1);
- X }
- X for (c = 0; c < strlen(firstline); c++) {
- X if (firstline[c] == ':')
- X break;
- X }
- X
- X strncpy(foot, firstline, c);
- X foot[c] = '\0';
- X if (title[0] == '\0') {
- X strncpy(title, &firstline[c + 1], 80);
- X title[79] = '\0';
- X }
- X /* Find out which type of map it is */
- X
- X if (maptype != FORCED) {
- X maptype = getmaptype(&firstline[c + 1]);
- X } else
- X maptype = SIMPLE;
- X
- X if (verbose) {
- X fprintf(stderr, "Maptype is ");
- X switch (maptype) {
- X case (SIMPLE):
- X fprintf(stderr, "simple\n");
- X break;
- X case (ALTITUDES):
- X fprintf(stderr, "altitudes\n");
- X break;
- X case (DESIGNATIONS):
- X fprintf(stderr, "designations\n");
- X break;
- X case (NATIONS):
- X fprintf(stderr, "nations\n");
- X break;
- X case (VEGETATIONS):
- X fprintf(stderr, "vegetations\n");
- X break;
- X default:
- X break;
- X }
- X }
- X /* Send the first part of the postscript file to outfile */
- X
- X fprintf(outfile, "%%!\n");
- X fprintf(outfile, "%% Created by conqps version %s\n\n", VERSION);
- X if (note)
- X fprintf(outfile, "\nnote\n\n");
- X fprintf(outfile, "%% Here comes the map data:\n");
- X
- X /* Parse the map */
- X
- X readmap();
- X
- X /* Build the last part of postscript file */
- X
- X buildps();
- X
- X /* Phu that was it. */
- X
- X if (infile != NULL)
- X fclose(infile);
- X if (outfile != NULL)
- X fclose(outfile);
- X
- X return (0);
- X}
- X
- SHAR_EOF
- chmod 0664 psmap.c || echo "restore of psmap.c fails"
- set `wc -c psmap.c`;Sum=$1
- if test "$Sum" != "11406"
- then echo original size 11406, current size $Sum;fi
- echo "x - extracting psmap.h (Text)"
- sed 's/^X//' << 'SHAR_EOF' > psmap.h &&
- X/*
- X * Header file for conqps by MaF
- X * Feel free to modify
- X * Comments should be sent to d8forma@dtek.chalmers.se
- X *
- X */
- X
- X/* Page size hassle */
- X#ifdef OTHER
- X#define DEFAULTPAGE 0
- X#endif
- X
- X#ifdef A4
- X#define DEFAULTPAGE 1
- X#endif
- X
- X#ifdef LETTER
- X#define DEFAULTPAGE 2
- X#endif
- X
- X/* Printer dependant entries */
- X#define PAGEWIDTH_A4 540
- X#define PAGEHEIGHT_A4 820
- X#define XOFFSET_A4 30
- X#define YOFFSET_A4 10
- X
- X#define PAGEWIDTH_LETTER 575
- X#define PAGEHEIGHT_LETTER 760
- X#define XOFFSET_LETTER 15
- X#define YOFFSET_LETTER 10
- X
- X#define PAGEWIDTH_OTHER 450
- X#define PAGEHEIGHT_OTHER 700
- X#define XOFFSET_OTHER 40
- X#define YOFFSET_OTHER 30
- X
- X/* Cosmetics */
- X#define XMARGINS 30
- X#define YMARGINS 50
- X
- X/* Version specific defines */
- X#define VERSION "1.0"
- X#define USAGE "Usage: %s [cghlnvu] [p pagesize] [f font] [o x,y] [s size]\n\t[W n] [L n] [X n] [Y n] [t title] [infile [outfile]]\n"
- X#define MATCHSTRING "Conquer Version"
- X
- X/* Mathematical definitions */
- X#define TRUE 1
- X#define FALSE 0
- X
- X/* Types of maps possible to be printed */
- X#define SIMPLE 0
- X#define ALTITUDES 1
- X#define DESIGNATIONS 2
- X#define NATIONS 3
- X#define VEGETATIONS 4
- X#define FORCED 5
- SHAR_EOF
- chmod 0664 psmap.h || echo "restore of psmap.h fails"
- set `wc -c psmap.h`;Sum=$1
- if test "$Sum" != "1310"
- then echo original size 1310, current size $Sum;fi
- echo "x - extracting psmap.ps (Text)"
- sed 's/^X//' << 'SHAR_EOF' > psmap.ps &&
- X%% Postscript part of conqps
- X%% Feel free to hack in it
- X%% Comments should be sent to d8forma@dtek.chalmers.se
- X
- X% This is the user variables
- X
- X% This is the font sizes
- X/TitleFont 13 def % For the title
- X/FootFont 7 def % For the foot texts
- X/CoordFont 5 def % For the coordinates
- X/SquareFont 6 def % For the letters inside the squares
- X
- X% This is the linewidth (one unit is 1/72 inch)
- X/LineWidth .3 def
- X
- X% This is how dark some things should be
- X% 0 is black 1 is white
- X/SeaCol .6 def % Colour of seas
- X/KnownCol .97 def % Colour of known squares
- X/SqTeCol 0 def % Colour of sector symbols
- X/WNCol 0.9 def % Colour of the other pages in where square
- X/WKCol 1 def % Colour of this page in where square
- X
- X
- X%===========================================================================
- X%========== Behind these walls lures the monster called PostSript ==========
- X%============== If thou should choose to enter know thy enemy ==============
- X%===========================================================================
- X
- X% This is the size of the little box showing which map this is
- X/WhereSize YMARGINS 2 div def
- X
- X/AdjustX
- X{
- X /x exch def
- X x 0 lt { /x x largex 1 add mod def } if
- X x 0 lt { /x x largex 1 add add def } if
- X x largex gt { /x x largex 1 add mod def } if
- X x largex 1 add eq {/x 0 def} if
- X x
- X} def
- X
- X/AdjustY
- X{
- X /y exch def
- X y 0 lt { /y y largey 1 add mod def } if
- X y 0 lt { /y y largey 1 add add def } if
- X y largey gt { /y y largey 1 add mod def } if
- X y largey 1 add eq {/y 0 def} if
- X y
- X} def
- X
- X/DoCoords
- X{
- X newpath
- X font findfont CoordFont scalefont setfont
- X
- X % Do Y coordiates
- X XMARGINS 2 div
- X YMARGINS .80 mul ydel sqsize mul add
- X moveto
- X ystart 1 ystart ydel add
- X {
- X /y exch AdjustY def
- X currentpoint
- X /str y (888) cvs def
- X str stringwidth pop 5 add neg 2
- X rmoveto
- X str show
- X 2 copy moveto
- X xdel 1 add sqsize mul 2 add 2 rmoveto
- X str show
- X sqsize sub moveto
- X } for
- X
- X % Do X coordinates
- X XMARGINS 2 div
- X YMARGINS .80 mul CoordFont sub 2 sub
- X moveto
- X xstart 1 xstart xdel add
- X {
- X /x exch AdjustX def
- X x 0 lt { /x x largex add def } if
- X x largex 1 add gt { /x x largex 1 add sub def } if
- X currentpoint
- X /str x (888) cvs def
- X str show
- X 2 copy ydel 2 add sqsize mul add 2 add moveto
- X str show
- X exch sqsize add exch moveto
- X } for
- X} def
- X
- X/DoGrid
- X{
- X newpath
- X
- X % Do X-lines
- X XMARGINS 2 div
- X YMARGINS .80 mul
- X moveto
- X ystart ydel add -1 ystart 1 sub
- X {
- X pop
- X xdel 1 add sqsize mul 0
- X rlineto
- X xdel 1 add sqsize mul neg sqsize
- X rmoveto
- X } for
- X
- X % Do Y-lines
- X XMARGINS 2 div
- X YMARGINS .80 mul
- X moveto
- X xstart 1 xstart xdel add 1 add
- X {
- X pop
- X 0 ydel 1 add sqsize mul
- X rlineto
- X sqsize ydel 1 add sqsize mul neg
- X rmoveto
- X } for
- X
- X stroke
- X} def
- X
- X/FillSec
- X{
- X sqsize 0 rlineto
- X 0 sqsize rlineto
- X sqsize neg 0 rlineto
- X closepath
- X gsave
- X /old currentgray def
- X setgray
- X fill
- X old setgray
- X grestore
- X stroke
- X}def
- X
- X/DoMap
- X{
- X /NotEmpty false def
- X /c ( ) def
- X font findfont SquareFont scalefont setfont
- X
- X 0 1 xdel
- X {
- X /X exch def
- X 0 1 ydel
- X {
- X /Y exch def
- X newpath
- X XMARGINS 2 div X sqsize mul add
- X ydel sqsize mul YMARGINS .80 mul add Y sqsize mul sub
- X moveto
- X /x X xstart add AdjustX def
- X /y Y ystart add AdjustY def
- X c 0 Map y get x get put
- X c ( ) ne
- X {
- X /NotEmpty true def
- X /NotDone true def
- X gsave
- X .01 setlinewidth
- X currentpoint
- X KnownCol FillSec
- X SqTeCol setgray
- X moveto
- X maptype (0) ne
- X {
- X c (#) eq
- X {
- X /NotDone false def
- X sqsize dup scale
- X .2 .2 rmoveto
- X .3 .6 rlineto
- X .3 -.6 rlineto
- X -.2 .4 rmoveto
- X -.2 0 rlineto
- X stroke
- X } if
- X c (^) eq
- X {
- X /NotDone false def
- X sqsize dup scale
- X .2 .2 rmoveto
- X .3 .4 rlineto
- X .2 -.4 rlineto
- X .1 0 rmoveto
- X -.1 .3 rlineto
- X -.1 -.1 rlineto
- X stroke
- X } if
- X c (%) eq
- X {
- X /NotDone false def
- X sqsize dup scale
- X currentpoint
- X translate
- X .2 .2 rmoveto
- X .4 .2 .2 180 40 arcn
- X .70 .2 moveto
- X .6 .2 .10 0 180 arc
- X stroke
- X } if
- X c (-) eq
- X {
- X /NotDone false def
- X sqsize dup scale
- X .2 .2 rmoveto
- X .6 0 rlineto
- X stroke
- X } if
- X } if
- X c (~) eq
- X {
- X /NotDone false def
- X SeaCol FillSec
- X } if
- X NotDone
- X {
- X sqsize 5 div dup rmoveto
- X c show
- X } if
- X grestore
- X } if
- X } for
- X } for
- X} def
- X
- X
- X/DoText
- X{
- X font findfont TitleFont scalefont setfont
- X PAGEWIDTH title stringwidth pop sub 2 div
- X YMARGINS .4 mul TitleFont 2 div sub
- X moveto title show
- X font findfont FootFont scalefont setfont
- X foot stringwidth pop
- X foot2 stringwidth pop
- X gt {foot} {foot2} ifelse
- X stringwidth pop
- X PAGEWIDTH exch sub dup
- X YMARGINS .4 mul
- X moveto foot show
- X YMARGINS .4 mul FootFont 1.5 mul sub
- X moveto foot2 show
- X} def
- X
- X/DrawWhere
- X{
- X 1 1 xpages {
- X /xsq exch def
- X ypages -1 1 {
- X /ysq exch def
- X newpath
- X 0 0 moveto
- X /sqxsize WhereSize xpages div def
- X /sqysize WhereSize ypages div def
- X xsq sqxsize mul ypages ysq sub sqysize mul
- X rmoveto % Am now at top left of this square
- X sqxsize 0 rlineto
- X 0 sqysize rlineto
- X sqxsize neg 0 rlineto
- X closepath
- X WNCol setgray
- X xsq currx eq ysq curry eq and { WKCol setgray } if
- X gsave fill grestore
- X 0 setgray stroke
- X } for
- X } for
- X} def
- X
- X/DoPage % currx curry xstart xdel ystart ydel
- X{
- X /ydel exch def
- X /ystart exch def
- X /xdel exch def
- X /xstart exch def
- X /curry exch def
- X /currx exch def
- X
- X /largey Map length 1 sub def
- X /largex Map 1 get length 1 sub def
- X
- X initgraphics
- X XOFFSET YOFFSET translate
- X noteq { 0.8544 0.9304 scale 0 YMARGINS .4 mul translate} if
- X LineWidth setlinewidth
- X DoText
- X xpages 1 ne ypages 1 ne or {DrawWhere} if
- X coords {DoCoords} if
- X grid {DoGrid} if
- X DoMap
- X NotEmpty {showpage} if
- X} def
- SHAR_EOF
- chmod 0664 psmap.ps || echo "restore of psmap.ps fails"
- set `wc -c psmap.ps`;Sum=$1
- if test "$Sum" != "6077"
- then echo original size 6077, current size $Sum;fi
- rm -f s2_seq_.tmp
- echo "You have unpacked the last part"
- exit 0
-